// Copyright (C) 2020 Toitware ApS.
// Use of this source code is governed by a Zero-Clause BSD license that can
// be found in the tests/LICENSE file.

main:
  true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true and true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true and true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true and true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true and true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true and true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true and true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true
  true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true or true or false and true or true and false and true and false and true and true and true or false or false and true
